package com.moyuaninfo.enums;

import cn.hutool.core.util.StrUtil;
import com.moyuaninfo.utils.ScopeUtils;

/**
 * @author 邱祥霸
 * @date 2020/4/9
 */
public class WaterQualityDataEnum {

    /**
     * 数据标准值
     */
    public enum OffCharts{
        /** ph*/
        PH("PH", "[6, 9]"),

        /** 温度*/
        OC("℃", ""),

        /** 溶氧*/
        DO("DO", "[0, 40]"),

        /** 浊度*/
        TRANSP("Transp", "[0, 20]"),

        /** 氨氮*/
        NH3_N("NH3-N", "[0, 1.5]"),

        /** 总磷*/
        TP("TP", "[0, 0.2]"),

        /** 高锰酸盐*/
        CODMN("CODmn", "[0, 15]"),

        /** 水位*/
        Z("Z", ""),

        /** 流速*/
        U("U", ""),
        ;

        /** 水质参数类型*/
        private String type;

        /** 标准值范围
         * 举个栗子：[0, 10] 标准值范围为 大于等于0, 小于等于10 ; (0, 10] 大于0 小于等于10
         */
        private String standardScope;

        OffCharts(String type, String standardScope) {
            this.type = type;
            this.standardScope = standardScope;
        }

        /**
         * 水质数据超标
         *
         * @param type 水质数据类型
         * @param value 水质数据
         * @return FALSE: 未超标; TRUE: 超标
         *
         * @author 邱祥霸
         * @date 2020/04/09
         */
        public static boolean standard(String type, String value) {
            OffCharts[] offChartsArr = OffCharts.values();
            for (OffCharts offCharts : offChartsArr) {
                if (!offCharts.type.equals(type)) {continue;}

                // 获取标准范围
                String standardScope = offCharts.standardScope;
                if (StrUtil.isBlank(standardScope)) {break;}

                // 值不在标准范围内
                return !ScopeUtils.scope(standardScope, value);
            }
            return false;
        }


    }


}
